package com.gxa.service.impl;

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.gxa.common.R;
import com.gxa.common.vo.FindDiagnosis;
import com.gxa.entity.SysJob;
import com.gxa.mapper.SysJobMapper;
import com.gxa.service.SysJobService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class SysJobServiceImpl implements SysJobService {
    @Autowired
    SysJobMapper sysJobMapper;

    /**
     * 分页显示所有职位
     * @param currentPage 当前页
     * @param pageSize 每页大小
     * @return R
     */
    @Override
    public R selectAllJob(Integer currentPage, Integer pageSize) {
        R r=new R();
        try {
            PageHelper.startPage(currentPage,pageSize);
            List<SysJob> sysJobList = sysJobMapper.selectAllJob();
            PageInfo<FindDiagnosis> pageInfo = new PageInfo(sysJobList);
            r.setCode(200);
            r.setMsg("success");
            r.setData(pageInfo);
        }catch (Exception e){
            e.printStackTrace();
            r.setCode(500);
            r.setMsg("服务器开小差了，请联系管理员");
        }
        return r;
    }

    /**
     * 添加职位
     * @param sysJob 职位实体
     * @return R
     */
    @Override
    public R addJob(SysJob sysJob) {
        R r=new R();
        try {
            sysJobMapper.addJob(sysJob);
            r.setCode(200);
            r.setMsg("success");
        }catch (Exception e){
            e.printStackTrace();
            r.setCode(500);
            r.setMsg("服务器开小差了，请联系管理员");
        }
        return r;
    }

    /**
     * 根据职位名称分页查询职位信息
     * @param title 职位名称
     * @param currentPage 当前页
     * @param pageSize 每页大小
     * @return R
     */
    @Override
    public R selectJobByTitle(String title,Integer currentPage, Integer pageSize) {
        R r=new R();
        try {
            PageHelper.startPage(currentPage,pageSize);
            List<SysJob> sysJobList = sysJobMapper.selectJobByTitle(title);
            PageInfo<FindDiagnosis> pageInfo = new PageInfo(sysJobList);
            r.setCode(200);
            r.setMsg("success");
            r.setData(pageInfo);
        }catch (Exception e){
            e.printStackTrace();
            r.setCode(500);
            r.setMsg("服务器开小差了，请联系管理员");
        }
        return r;
    }

    /**
     * 根据职位Id回显职位信息
     * @param id 职位ID
     * @return R
     */
    @Override
    public R selectJobById(Integer id) {
        R r=new R();
        try {
            sysJobMapper.selectJobById(id);
            r.setCode(200);
            r.setMsg("success");
        }catch (Exception e){
            e.printStackTrace();
            r.setCode(500);
            r.setMsg("服务器开小差了，请联系管理员");
        }
        return r;
    }

    /**
     * 根据职位ID修改职位信息
     * @param sysJob 职位实体
     * @return R
     */
    @Override
    public R updateJobById(SysJob sysJob) {
        R r=new R();
        try {
            sysJobMapper.updateJobById(sysJob);
            r.setCode(200);
            r.setMsg("success");
        }catch (Exception e){
            e.printStackTrace();
            r.setCode(500);
            r.setMsg("服务器开小差了，请联系管理员");
        }
        return r;
    }

    /**
     * 根据职位ID删除职位信息
     * @param id 职位ID
     * @return R
     */
    @Override
    public R delJobById(Integer id) {
        R r=new R();
        try {
            sysJobMapper.delJobById(id);
            r.setCode(200);
            r.setMsg("success");
        }catch (Exception e){
            e.printStackTrace();
            r.setCode(500);
            r.setMsg("服务器开小差了，请联系管理员");
        }
        return r;
    }
}
